<!DOCTYPE html>
<html lang="en-US">
    <head>
        <title>CPAN::Uploader - upload things to the CPAN - metacpan.org</title>
        <link rel="preload" as="fetch" href="https://metacpan.org/account/login_status" crossorigin="anonymous" />
        <link href="https://metacpan.org/_assets/b8ccceeed47a0652049703d99326a9cea4933443.css" rel="stylesheet" type="text/css">
        <script src="https://metacpan.org/_assets/6bfedafe2d7caa915b7d84f61b45936818e3242e.js" type="text/javascript" defer></script>
        <link rel="alternate" type="application/rss+xml" title="Recent CPAN Uploads of CPAN-Uploader - MetaCPAN" href="https://metacpan.org/dist/CPAN-Uploader/releases.rss" />
        <link rel="canonical" href="./CPAN::Uploader.html" />
        <meta name="description" content="upload things to the CPAN" />
        <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=5">
        <link rel="shortcut icon" href="https://metacpan.org/static/icons/favicon.ico">
        <link rel="apple-touch-icon" sizes="152x152" href="https://metacpan.org/static/icons/apple-touch-icon.png">
        <link rel="search" href="https://metacpan.org/static/opensearch.xml" type="application/opensearchdescription+xml" title="MetaCPAN">
        <script>
          (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
          (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
          m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
          })(window,document,'script','//www.google-analytics.com/analytics.js','ga');

          (function(skey, ga_id){
            ga('create', ga_id, {
              siteSpeedSampleRate : 100,
              storage             : 'none',
              clientId            : localStorage.getItem(skey)
            });
            ga(function(tracker) {
              localStorage.setItem(skey, tracker.get('clientId'));
            });
            ga('send', 'pageview');
          })('ga:clientId', 'UA-27829474-1');
        </script>
<meta name="twitter:card"        content="summary" />
<meta name="twitter:url"         content="https://metacpan.org/pod/CPAN::Uploader" />
<meta name="twitter:title"       content="CPAN::Uploader" />
<meta name="twitter:description" content="upload things to the CPAN" />
<meta name="twitter:site"        content="metacpan" />
    </head>
    <body>
        <nav class="navbar navbar-default" role="navigation">
            <div class="header-logo-large hidden-xs">
              <a href="https://metacpan.org/" tabindex="0">
                <svg class="logo" aria-label="MetaCPAN">
                  <use class="logo" href="/static/images/metacpan-logo.svg#logo" />
                </svg>
              </a>
            </div>
            <div class="header-logo-icon visible-xs">
              <a href="https://metacpan.org/">
                <svg class="logo" aria-label="MetaCPAN">
                  <use class="logo" href="/static/images/metacpan-logo.svg#dots" />
                </svg>
              </a>
            </div>
            <ul class="nav navbar-nav menu-items hidden-xs hidden-sm">
              <li><a href="https://metacpan.org/about">About</a></li>
              <li><a href="https://metacpan.org/about/sponsors">Sponsor</a></li>
              <li><a href="https://grep.metacpan.org/">grep::cpan</a></li>
              <li><a href="https://metacpan.org/recent">Recent</a></li>
              <li><a href="https://metacpan.org/about/faq">FAQ</a></li>
              <li><a href="https://metacpan.org/tools">Tools</a></li>
              <li><a href="https://fastapi.metacpan.org/">API</a></li>
            </ul>
            <ul class="nav navbar-nav navbar-right">
                <button type="button" class="searchbar-btn visible-xs visible-sm">
                    <i class="fa fa-search button-fa-icon"></i>
                </button>
                <form action="https://metacpan.org/search" class="searchbar-form visible-md visible-lg search-form form-horizontal">
                   <input type="hidden" name="size" id="metacpan_search-size" value="20">
                  <div class="form-group">
                      <div class="search-group">
                        <i class="fa fa-search"></i>
                        <input type="text" name="q" placeholder="Search the CPAN" size="41" autocorrect="off" autocapitalize="off" spellcheck="false" id="metacpan_search-input" class="form-control" value="">
                      </div>
                  </div>
                </form>
                    <li class="icon-slidepanel visible-xs visible-sm">
                      <button data-toggle="slidepanel" data-target=".slidepanel">
                        <span class="button-fa-icon">
                          <i class="fa fa-bars slidepanel-open"></i>
                          <i class="fa fa-times slidepanel-close"></i>
                        </span>
                      </button>
                    </li>
                <form action="https://metacpan.org/account/logout" method="POST" id="metacpan-logout"></form>
                <li class="dropdown logged_in" style="display: none;">
                    <button type="button" class="dropdown-toggle" data-toggle="dropdown">
                      <i class="fa fa-user button-fa-icon logged-in-icon" aria-hidden="true"></i>
                      <i class="fas fa-chevron-down"></i>
                    </button>
                    <ul class="dropdown-menu">
                        <li><a href="https://metacpan.org/account/identities">Identities</a></li>
                        <li><a href="https://metacpan.org/account/profile">Profile</a></li>
                        <li><a href="https://metacpan.org/account/favorite/list">Favorites</a></li>
                        <li>
                            <a href="./CPAN::Uploader.html#" type="button" onclick="$('#metacpan-logout').submit(); return false">
                              Logout
                            </a>
                        </li>
                    </ul>
                </li>
                <li class="dropdown logged_out" style="display: none;">
                    <button type="button" class="dropdown-toggle" data-toggle="dropdown">
                      <i class="fa fa-user button-fa-icon" aria-hidden="true"></i>
                      <i class="fas fa-chevron-down"></i>
                    </button>
                    <ul class="dropdown-menu">
                        <li>
                            <a href="https://metacpan.org/login/github">
                                <i class="fab fa-github fa-fw"></i>
                                GitHub
                            </a>
                        </li>
                        <li>
                            <a href="https://metacpan.org/login/twitter">
                                <i class="fab fa-twitter fa-fw"></i>
                                Twitter
                            </a>
                        </li>
                        <li>
                            <a href="https://metacpan.org/login/google">
                                <i class="fab fa-google fa-fw"></i>
                                Google
                            </a>
                        </li>
                    </ul>
                </li>
                <li class="dropdown logged_placeholder">
                    <button>
                      <i class="fa fa-user button-fa-icon" aria-hidden="true"></i>
                    </button>
                </li>
            </ul>
        </nav>
        <div class="page-content ">
          <!--
          <div class="top-notify-banner">
            <i class="fas fa-info-circle"></i>
          </div>
          -->
          <nav class="sidebar">
            <div class="slidepanel">
              <ul class="nav-list ">
    <li class="nav-header no-margin-top">
      <div class="ttip" data-toggle="tooltip" data-placement="bottom" title="The date that this version of CPAN-Uploader was released.">
      <span class="relatize">14 Jan 2023 02:12:02 UTC</span>
    </li>
  <li>
    Distribution: <a href="https://metacpan.org/dist/CPAN-Uploader">CPAN-Uploader</a>
  </li>
  <li>
    Module version: 0.103018
  </li>
  <li>
    <a data-keyboard-shortcut="g s" href="https://metacpan.org/dist/CPAN-Uploader/source/lib/CPAN/Uploader.pm">Source</a>
    (<a href="https://metacpan.org/dist/CPAN-Uploader/source/lib/CPAN/Uploader.pm?raw=1">raw</a>)
  </li>
  <li>
    <a data-keyboard-shortcut="g b" href="https://metacpan.org/dist/CPAN-Uploader/source/lib/CPAN">Browse</a>
    (<a href="https://metacpan.org/dist/CPAN-Uploader/source/lib/CPAN?raw=1">raw</a>)
  </li>
    <li>
      <a data-keyboard-shortcut="g c" href="https://metacpan.org/dist/CPAN-Uploader/changes">Changes</a>
    </li>
    <li>
      <a rel="noopener nofollow" class="nopopup" href="https://github.com/rjbs/CPAN-Uploader">Homepage</a>
    </li>
    <li>
      <a class="nopopup" href="https://metacpan.org/dist/CPAN-Uploader/contribute">How to Contribute</a>
    </li>
    <li>
        <a rel="noopener nofollow" data-keyboard-shortcut="g r" href="https://github.com/rjbs/CPAN-Uploader">Repository</a>
    </li>
    <li>
      <a rel="noopener nofollow" data-keyboard-shortcut="g i" href="https://github.com/rjbs/CPAN-Uploader/issues">Issues</a>
    </li>
    <li>
      <a rel="noopener nofollow" href="http://matrix.cpantesters.org/?dist=CPAN-Uploader+0.103018" title="Matrix">Testers</a>
        <span title="(pass / fail / na)">(<a rel="noopener nofollow" href="https://www.cpantesters.org/distro/C/CPAN-Uploader.html?oncpan=1&amp;distmat=1&amp;version=0.103018&amp;grade=2" style="color: #090">23</a> / <a rel="noopener nofollow" href="https://www.cpantesters.org/distro/C/CPAN-Uploader.html?oncpan=1&amp;distmat=1&amp;version=0.103018&amp;grade=3" style="color: #900">0</a> / <a rel="noopener nofollow" href="https://www.cpantesters.org/distro/C/CPAN-Uploader.html?oncpan=1&amp;distmat=1&amp;version=0.103018&amp;grade=4">0</a>)</span>
    </li>
    <li>
      <a rel="noopener nofollow" href="http://cpants.cpanauthors.org/release/RJBS/CPAN-Uploader-0.103018">Kwalitee</a>
    </li>
    <li>
      <div class="ttip" data-toggle="tooltip" data-placement="bottom" title="The # people with an indexing permission on CPAN-Uploader who have released something to CPAN in the last 2 years (i.e. the # people likely able to release critical fixes in a timely manner)">
      Bus factor: 1
      </div>
    </li>
    <li>
      <a rel="noopener nofollow" href="http://cpancover.com/latest/CPAN-Uploader-0.103018/index.html">23.60% Coverage </a>
    </li>
    <li>
      License: perl_5
    </li>
    <li>
      Perl: v5.12.0
    </li>
    <li class="nav-header">Activity</li>
    <li>
<div class="activity-graph">
    <img src="https://metacpan.org/dist/CPAN-Uploader/activity.svg?res=month" />
    <div class="comment">24 month</div>
</div>
    </li>
    <li class="nav-header">Tools</li>
    <li>
      <a itemprop="downloadUrl" href="https://cpan.metacpan.org/authors/id/R/RJ/RJBS/CPAN-Uploader-0.103018.tar.gz">
      Download (<span itemprop="fileSize">22.53KB</span>)</a>
    </li>
    <li>
      <a href="https://explorer.metacpan.org/?url=%2Fmodule%2FRJBS%2FCPAN-Uploader-0.103018%2Flib%2FCPAN%2FUploader.pm">
        MetaCPAN Explorer
      </a>
    </li>
    <li>
      <a href="https://metacpan.org/dist/CPAN-Uploader/permissions">
        Permissions
      </a>
    </li>
    <li>
      <a href="https://metacpan.org/dist/CPAN-Uploader/releases.rss">
        Subscribe to distribution
      </a>
    </li>
    <li>
      <button class="btn btn-link" data-toggle="modal" data-target="#metacpan_install-instructions-dialog">
        Install Instructions
      </button>
    </li>
    <li>
      <form action="https://metacpan.org/search">
        <input type="hidden" name="q" value="dist:CPAN-Uploader">
        <input type="search" name="q" placeholder="Search distribution" class="form-control tool-bar-form">
        <input type="submit" style="display: none">
      </form>
    </li>
    <li>
      <form action="https://grep.metacpan.org/search">
        <input type="hidden" name="qd" value="CPAN-Uploader">
        <input type="hidden" name="source" value="metacpan">
        <input type="search" name="q" placeholder="grep distribution" class="form-control tool-bar-form">
        <input type="submit" style="display: none">
     </form>
    </li>
    <li class="version-jump">
<select onchange="document.location.href=&#39;/release/&#39;+this.value+&#39;/view/lib/CPAN/Uploader.pm&#39;" class="form-control tool-bar-form">
  <option disabled selected>Jump to version</option>
<option
  disabled
  value="RJBS/CPAN-Uploader-0.103018"
>0.103018
  (RJBS on 2023-01-14)</option>
<option
  
  value="RJBS/CPAN-Uploader-0.103017"
>0.103017
  (RJBS on 2023-01-01)</option>
<optgroup label="BackPAN">'
<option
  
  value="RJBS/CPAN-Uploader-0.103016"
>0.103016
  (RJBS on 2021-10-31)</option>
<option
  
  value="RJBS/CPAN-Uploader-0.103015"
>0.103015
  (RJBS on 2020-08-21)</option>
<option
  
  value="RJBS/CPAN-Uploader-0.103014"
>0.103014
  (RJBS on 2020-06-07)</option>
<option
  
  value="RJBS/CPAN-Uploader-0.103013"
>0.103013
  (RJBS on 2016-09-06)</option>
<option
  
  value="RJBS/CPAN-Uploader-0.103012"
>0.103012
  (RJBS on 2016-01-01)</option>
<option
  
  value="RJBS/CPAN-Uploader-0.103011"
>0.103011
  (RJBS on 2015-10-06)</option>
<option
  
  value="RJBS/CPAN-Uploader-0.103010"
>0.103010
  (RJBS on 2015-08-11)</option>
<option
  
  value="RJBS/CPAN-Uploader-0.103009"
>0.103009
  (RJBS on 2015-05-27)</option>
<option
  
  value="RJBS/CPAN-Uploader-0.103008"
>0.103008
  (RJBS on 2015-02-09)</option>
<option
  
  value="RJBS/CPAN-Uploader-0.103007"
>0.103007
  (RJBS on 2014-04-05)</option>
<option
  
  value="RJBS/CPAN-Uploader-0.103006"
>0.103006
  (RJBS on 2013-12-13)</option>
<option
  
  value="RJBS/CPAN-Uploader-0.103005-TRIAL"
>0.103005-TRIAL DEV
  (RJBS on 2013-07-01)</option>
<option
  
  value="RJBS/CPAN-Uploader-0.103004"
>0.103004
  (RJBS on 2013-03-12)</option>
<option
  
  value="RJBS/CPAN-Uploader-0.103003-TRIAL"
>0.103003-TRIAL DEV
  (RJBS on 2013-01-31)</option>
<option
  
  value="RJBS/CPAN-Uploader-0.103002"
>0.103002
  (RJBS on 2012-12-25)</option>
<option
  
  value="RJBS/CPAN-Uploader-0.103001"
>0.103001
  (RJBS on 2012-03-26)</option>
<option
  
  value="RJBS/CPAN-Uploader-0.103000"
>0.103000
  (RJBS on 2011-04-08)</option>
<option
  
  value="RJBS/CPAN-Uploader-0.102150"
>0.102150
  (RJBS on 2010-08-03)</option>
<option
  
  value="RJBS/CPAN-Uploader-0.101670"
>0.101670
  (RJBS on 2010-06-16)</option>
<option
  
  value="RJBS/CPAN-Uploader-0.101550"
>0.101550
  (RJBS on 2010-06-04)</option>
<option
  
  value="RJBS/CPAN-Uploader-0.101260"
>0.101260
  (RJBS on 2010-05-07)</option>
<option
  
  value="RJBS/CPAN-Uploader-0.100760"
>0.100760
  (RJBS on 2010-03-17)</option>
<option
  
  value="RJBS/CPAN-Uploader-0.100750"
>0.100750
  (RJBS on 2010-03-16)</option>
<option
  
  value="RJBS/CPAN-Uploader-0.100660"
>0.100660
  (RJBS on 2010-03-07)</option>
<option
  
  value="RJBS/CPAN-Uploader-0.093390"
>0.093390
  (RJBS on 2009-12-06)</option>
<option
  
  value="RJBS/CPAN-Uploader-0.093330"
>0.093330
  (RJBS on 2009-11-29)</option>
<option
  
  value="RJBS/CPAN-Uploader-0.092340"
>0.092340
  (RJBS on 2009-08-22)</option>
<option
  
  value="RJBS/CPAN-Uploader-0.091270"
>0.091270
  (RJBS on 2009-05-07)</option>
<option
  
  value="RJBS/CPAN-Uploader-0.006"
>0.006
  (RJBS on 2009-02-09)</option>
<option
  
  value="RJBS/CPAN-Uploader-0.005"
>0.005
  (RJBS on 2008-11-09)</option>
<option
  
  value="RJBS/CPAN-Uploader-0.004"
>0.004
  (RJBS on 2008-10-23)</option>
<option
  
  value="RJBS/CPAN-Uploader-0.003"
>0.003
  (RJBS on 2008-06-09)</option>
<option
  
  value="RJBS/CPAN-Uploader-0.002"
>0.002
  (RJBS on 2008-06-06)</option>
<option
  
  value="RJBS/CPAN-Uploader-0.001"
>0.001
  (RJBS on 2008-06-06)</option>
</optgroup>
</select>
    </li>
    <li class="version-diff">
<select onchange="document.location.href='/release/RJBS/CPAN-Uploader-0.103018/diff/' + encodeURIComponent(this.value) + '/lib/CPAN/Uploader.pm'
" class="form-control tool-bar-form">
  <option disabled selected>Diff with version</option>
<option
  disabled
  value="RJBS/CPAN-Uploader-0.103018"
>0.103018
  (RJBS on 2023-01-14)</option>
<option
  
  value="RJBS/CPAN-Uploader-0.103017"
>0.103017
  (RJBS on 2023-01-01)</option>
<optgroup label="BackPAN">'
<option
  
  value="RJBS/CPAN-Uploader-0.103016"
>0.103016
  (RJBS on 2021-10-31)</option>
<option
  
  value="RJBS/CPAN-Uploader-0.103015"
>0.103015
  (RJBS on 2020-08-21)</option>
<option
  
  value="RJBS/CPAN-Uploader-0.103014"
>0.103014
  (RJBS on 2020-06-07)</option>
<option
  
  value="RJBS/CPAN-Uploader-0.103013"
>0.103013
  (RJBS on 2016-09-06)</option>
<option
  
  value="RJBS/CPAN-Uploader-0.103012"
>0.103012
  (RJBS on 2016-01-01)</option>
<option
  
  value="RJBS/CPAN-Uploader-0.103011"
>0.103011
  (RJBS on 2015-10-06)</option>
<option
  
  value="RJBS/CPAN-Uploader-0.103010"
>0.103010
  (RJBS on 2015-08-11)</option>
<option
  
  value="RJBS/CPAN-Uploader-0.103009"
>0.103009
  (RJBS on 2015-05-27)</option>
<option
  
  value="RJBS/CPAN-Uploader-0.103008"
>0.103008
  (RJBS on 2015-02-09)</option>
<option
  
  value="RJBS/CPAN-Uploader-0.103007"
>0.103007
  (RJBS on 2014-04-05)</option>
<option
  
  value="RJBS/CPAN-Uploader-0.103006"
>0.103006
  (RJBS on 2013-12-13)</option>
<option
  
  value="RJBS/CPAN-Uploader-0.103005-TRIAL"
>0.103005-TRIAL DEV
  (RJBS on 2013-07-01)</option>
<option
  
  value="RJBS/CPAN-Uploader-0.103004"
>0.103004
  (RJBS on 2013-03-12)</option>
<option
  
  value="RJBS/CPAN-Uploader-0.103003-TRIAL"
>0.103003-TRIAL DEV
  (RJBS on 2013-01-31)</option>
<option
  
  value="RJBS/CPAN-Uploader-0.103002"
>0.103002
  (RJBS on 2012-12-25)</option>
<option
  
  value="RJBS/CPAN-Uploader-0.103001"
>0.103001
  (RJBS on 2012-03-26)</option>
<option
  
  value="RJBS/CPAN-Uploader-0.103000"
>0.103000
  (RJBS on 2011-04-08)</option>
<option
  
  value="RJBS/CPAN-Uploader-0.102150"
>0.102150
  (RJBS on 2010-08-03)</option>
<option
  
  value="RJBS/CPAN-Uploader-0.101670"
>0.101670
  (RJBS on 2010-06-16)</option>
<option
  
  value="RJBS/CPAN-Uploader-0.101550"
>0.101550
  (RJBS on 2010-06-04)</option>
<option
  
  value="RJBS/CPAN-Uploader-0.101260"
>0.101260
  (RJBS on 2010-05-07)</option>
<option
  
  value="RJBS/CPAN-Uploader-0.100760"
>0.100760
  (RJBS on 2010-03-17)</option>
<option
  
  value="RJBS/CPAN-Uploader-0.100750"
>0.100750
  (RJBS on 2010-03-16)</option>
<option
  
  value="RJBS/CPAN-Uploader-0.100660"
>0.100660
  (RJBS on 2010-03-07)</option>
<option
  
  value="RJBS/CPAN-Uploader-0.093390"
>0.093390
  (RJBS on 2009-12-06)</option>
<option
  
  value="RJBS/CPAN-Uploader-0.093330"
>0.093330
  (RJBS on 2009-11-29)</option>
<option
  
  value="RJBS/CPAN-Uploader-0.092340"
>0.092340
  (RJBS on 2009-08-22)</option>
<option
  
  value="RJBS/CPAN-Uploader-0.091270"
>0.091270
  (RJBS on 2009-05-07)</option>
<option
  
  value="RJBS/CPAN-Uploader-0.006"
>0.006
  (RJBS on 2009-02-09)</option>
<option
  
  value="RJBS/CPAN-Uploader-0.005"
>0.005
  (RJBS on 2008-11-09)</option>
<option
  
  value="RJBS/CPAN-Uploader-0.004"
>0.004
  (RJBS on 2008-10-23)</option>
<option
  
  value="RJBS/CPAN-Uploader-0.003"
>0.003
  (RJBS on 2008-06-09)</option>
<option
  
  value="RJBS/CPAN-Uploader-0.002"
>0.002
  (RJBS on 2008-06-06)</option>
<option
  
  value="RJBS/CPAN-Uploader-0.001"
>0.001
  (RJBS on 2008-06-06)</option>
</optgroup>
</select>
    </li>

    <li>
<ul class="dependencies">
  <li class="nav-header">Dependencies</li>
  <li><a href="https://metacpan.org/pod/Carp" title="Carp" class="ellipsis">Carp</a></li>
  <li><a href="https://metacpan.org/pod/Data::Dumper" title="Data::Dumper" class="ellipsis">Data::Dumper</a></li>
  <li><a href="https://metacpan.org/pod/Digest::MD5" title="Digest::MD5" class="ellipsis">Digest::MD5</a></li>
  <li><a href="https://metacpan.org/pod/File::Basename" title="File::Basename" class="ellipsis">File::Basename</a></li>
  <li><a href="https://metacpan.org/pod/File::Spec" title="File::Spec" class="ellipsis">File::Spec</a></li>
  <li><a href="https://metacpan.org/pod/Getopt::Long::Descriptive" title="Getopt::Long::Descriptive" class="ellipsis">Getopt::Long::Descriptive</a></li>
  <li><a href="https://metacpan.org/pod/HTTP::Request::Common" title="HTTP::Request::Common" class="ellipsis">HTTP::Request::Common</a></li>
  <li><a href="https://metacpan.org/pod/HTTP::Status" title="HTTP::Status" class="ellipsis">HTTP::Status</a></li>
  <li><a href="https://metacpan.org/pod/LWP::Protocol::https" title="LWP::Protocol::https" class="ellipsis">LWP::Protocol::https</a></li>
  <li><a href="./LWP::UserAgent.html" title="LWP::UserAgent" class="ellipsis">LWP::UserAgent</a></li>
  <li><a href="./Term::ReadKey.html" title="Term::ReadKey" class="ellipsis">Term::ReadKey</a></li>
  <li><a href="https://metacpan.org/pod/strict" title="strict" class="ellipsis">strict</a></li>
  <li><a href="https://metacpan.org/pod/warnings" title="warnings" class="ellipsis">warnings</a></li>
  <li>
    <hr>
  </li>
  <li>
    <a href="https://metacpan.org/module/CPAN::Uploader/requires">Reverse dependencies</a>
  </li>
  <li>
    <a href="http://deps.cpantesters.org/?module=CPAN%3A%3AUploader">CPAN Testers List</a>
  </li>
  <li>
    <a href="https://cpandeps.grinnz.com/?dist=CPAN-Uploader">Dependency graph</a>
  </li>
</ul>
    </li>
    <li class="nav-header">Permalinks</li>
    <li>
      <a href="https://metacpan.org/release/RJBS/CPAN-Uploader-0.103018/view/lib/CPAN/Uploader.pm">This version</a>
    </li>
    <li>
      <a href="./CPAN::Uploader.html">Latest version</a>
    </li>
    <li>
<div class="plussers">
<div class="nav-header">++ed by:</div>
<div>
<a class="display-all" href="https://metacpan.org/author/DAGOLDEN"><img src="https://www.gravatar.com/avatar/bb755c989fcb9897f28a2c6e00df61e2?d=identicon&amp;s=20" title="DAGOLDEN" alt="DAGOLDEN"></a>
<a class="display-all" href="https://metacpan.org/author/BKB"><img src="https://www.gravatar.com/avatar/191945c6c283d81db701008b2d89b68c?d=identicon&amp;s=20" title="BKB" alt="BKB"></a>
<a class="display-all" href="https://metacpan.org/author/DOUGDUDE"><img src="https://www.gravatar.com/avatar/55ec7e7ef06ffa35decf218a2ca6485a?d=identicon&amp;s=20" title="DOUGDUDE" alt="DOUGDUDE"></a>
<a class="display-all" href="https://metacpan.org/author/ANTIPASTA"><img src="https://www.gravatar.com/avatar/6e53eff17383bb2a3c2d57f6bb268fac?d=identicon&amp;s=20" title="ANTIPASTA" alt="ANTIPASTA"></a>
<a class="display-all" href="https://metacpan.org/author/PINGAN"><img src="https://www.gravatar.com/avatar/a02222e5e0e4fd24d52fc29a08ac6bcb?d=identicon&amp;s=20" title="PINGAN" alt="PINGAN"></a>
</div>
<!-- Display counts of plussers-->
<div>
    <a href="https://metacpan.org/dist/CPAN-Uploader/plussers">17 PAUSE users</a>
</div>
<div>
    7 non-PAUSE users
</div>
</div>
    </li>
    <li>
<div id="metacpan_contributors">
  <div>
    <button class="btn-link"
      onclick="$(this).hide(); $('#metacpan_contributors ul').slideDown(); return false;"
    >and 20 contributors</button>
  </div>
  <ul style="display: none">
    <li class="contributor"
      data-cpan-author="BARBIE"
      data-contrib-email="barbie@missbarbell.co.uk"
    >
      <a href="https://metacpan.org/author/BARBIE" class="cpan-author">
      <img class="gravatar" width="20" height="20" src="https://www.gravatar.com/avatar/92c6c2f8be6f62c74aae398b99aefe57?d=identicon&amp;s=20" />
      Barbie
      </a>
    </li>
    <li class="contributor"
      data-cpan-author="MITHALDU"
      data-contrib-email="walde.christian@googlemail.com"
    >
      <a href="https://metacpan.org/author/MITHALDU" class="cpan-author">
      <img class="gravatar" width="20" height="20" src="https://www.gravatar.com/avatar/d9c28af939032ab0c30fd7be8fdc1040?d=identicon&amp;s=20" />
      Christian Walde
      </a>
    </li>
    <li class="contributor"
      data-contrib-email="david@porkrind.org"
    >
      <img class="gravatar" width="20" height="20" src="https://www.gravatar.com/avatar/d41d8cd98f00b204e9800998ecf8427e?d=identicon&amp;s=20" />
      David Caldwell
    </li>
    <li class="contributor"
      data-cpan-author="DAGOLDEN"
      data-contrib-email="dagolden@cpan.org"
    >
      <a href="https://metacpan.org/author/DAGOLDEN" class="cpan-author">
      <img class="gravatar" width="20" height="20" src="https://www.gravatar.com/avatar/bb755c989fcb9897f28a2c6e00df61e2?d=identicon&amp;s=20" />
      David Golden
      </a>
    </li>
    <li class="contributor"
      data-cpan-author="FREW"
      data-contrib-email="frioux@gmail.com"
    >
      <a href="https://metacpan.org/author/FREW" class="cpan-author">
      <img class="gravatar" width="20" height="20" src="https://www.gravatar.com/avatar/99d7d0aba169ea255ffa5c8c63f652ae?d=identicon&amp;s=20" />
      fREW Schmidt
      </a>
    </li>
    <li class="contributor"
      data-contrib-email="szabgab@gmail.com"
    >
      <img class="gravatar" width="20" height="20" src="https://www.gravatar.com/avatar/d41d8cd98f00b204e9800998ecf8427e?d=identicon&amp;s=20" />
      Gabor Szabo
    </li>
    <li class="contributor"
      data-cpan-author="HAARG"
      data-contrib-email="haarg@haarg.org"
    >
      <a href="https://metacpan.org/author/HAARG" class="cpan-author">
      <img class="gravatar" width="20" height="20" src="https://www.gravatar.com/avatar/5037faf9ba40cf736778820fe83fc2ae?d=identicon&amp;s=20" />
      Graham Knop
      </a>
    </li>
    <li class="contributor"
      data-cpan-author="ETHER"
      data-contrib-email="ether@cpan.org"
    >
      <a href="https://metacpan.org/author/ETHER" class="cpan-author">
      <img class="gravatar" width="20" height="20" src="https://www.gravatar.com/avatar/bdc5cd06679e732e262f6c1b450a0237?d=identicon&amp;s=20" />
      Karen Etheridge
      </a>
    </li>
    <li class="contributor"
      data-contrib-email="kentfredric@gmail.com"
    >
      <img class="gravatar" width="20" height="20" src="https://www.gravatar.com/avatar/d41d8cd98f00b204e9800998ecf8427e?d=identicon&amp;s=20" />
      Kent Fredric
    </li>
    <li class="contributor"
      data-contrib-email="marcus.ramberg@gmail.com"
    >
      <img class="gravatar" width="20" height="20" src="https://www.gravatar.com/avatar/d41d8cd98f00b204e9800998ecf8427e?d=identicon&amp;s=20" />
      Marcus Ramberg
    </li>
    <li class="contributor"
      data-cpan-author="MARKF"
      data-contrib-email="mark@twoshortplanks.com"
    >
      <a href="https://metacpan.org/author/MARKF" class="cpan-author">
      <img class="gravatar" width="20" height="20" src="https://www.gravatar.com/avatar/c78176dc138e2c77b10757b952adf0ee?d=identicon&amp;s=20" />
      Mark Fowler
      </a>
    </li>
    <li class="contributor"
      data-contrib-email="doherty@cs.dal.ca"
    >
      <img class="gravatar" width="20" height="20" src="https://www.gravatar.com/avatar/d41d8cd98f00b204e9800998ecf8427e?d=identicon&amp;s=20" />
      Mike Doherty
    </li>
    <li class="contributor"
      data-cpan-author="PERLANCAR"
      data-contrib-email="perlancar@gmail.com"
    >
      <a href="https://metacpan.org/author/PERLANCAR" class="cpan-author">
      <img class="gravatar" width="20" height="20" src="https://www.gravatar.com/avatar/c66c9e215cc2342796cd87ca82d044a8?d=identicon&amp;s=20" />
      perlancar
      </a>
    </li>
    <li class="contributor"
      data-contrib-email="rjbs@semiotic.systems"
    >
      <img class="gravatar" width="20" height="20" src="https://www.gravatar.com/avatar/d41d8cd98f00b204e9800998ecf8427e?d=identicon&amp;s=20" />
      Ricardo Signes
    </li>
    <li class="contributor"
      data-cpan-author="SHLOMIF"
      data-contrib-email="shlomif@shlomifish.org"
    >
      <a href="https://metacpan.org/author/SHLOMIF" class="cpan-author">
      <img class="gravatar" width="20" height="20" src="https://www.gravatar.com/avatar/072331b92b0e6e9d9bc31c3af8f8ccea?d=identicon&amp;s=20" />
      Shlomi Fish
      </a>
    </li>
    <li class="contributor"
      data-contrib-email="stevenharyanto@gmail.com"
    >
      <img class="gravatar" width="20" height="20" src="https://www.gravatar.com/avatar/d41d8cd98f00b204e9800998ecf8427e?d=identicon&amp;s=20" />
      Steven Haryanto (on Asus Zenbook)
    </li>
    <li class="contributor"
      data-cpan-author="SUNGO"
      data-contrib-email="sungo@sungo.us"
    >
      <a href="https://metacpan.org/author/SUNGO" class="cpan-author">
      <img class="gravatar" width="20" height="20" src="https://www.gravatar.com/avatar/f56a880c6762d6c15191c88a3b0382b2?d=identicon&amp;s=20" />
      sungo
      </a>
    </li>
    <li class="contributor"
      data-contrib-email="thibault.duponchelle@amadeus.com"
    >
      <img class="gravatar" width="20" height="20" src="https://www.gravatar.com/avatar/d41d8cd98f00b204e9800998ecf8427e?d=identicon&amp;s=20" />
      Thibault DUPONCHELLE
    </li>
    <li class="contributor"
      data-contrib-email="github@raudssus.de"
    >
      <img class="gravatar" width="20" height="20" src="https://www.gravatar.com/avatar/d41d8cd98f00b204e9800998ecf8427e?d=identicon&amp;s=20" />
      Torsten Raudssus
    </li>
    <li class="contributor"
      data-contrib-email="perl@profvince.com"
    >
      <img class="gravatar" width="20" height="20" src="https://www.gravatar.com/avatar/d41d8cd98f00b204e9800998ecf8427e?d=identicon&amp;s=20" />
      Vincent Pit
    </li>
  </ul>
</div>
    </li>
              </ul>
            </div>
          </nav>
          <div class="content-navigation">
<div class="breadcrumbs">
  <span>
    <a data-keyboard-shortcut="g a" rel="author" href="https://metacpan.org/author/RJBS" class="author-name">Ricardo SIGNES 😄</a>
  </span>
  <span>&nbsp;/&nbsp;</span>
  <div class="release dist-release status-latest maturity-released">
    <span class="dropdown"><b class="caret"></b></span>
<select onchange="document.location.href=&#39;/release/&#39;+this.value+&#39;/view/lib/CPAN/Uploader.pm&#39;" class="">
<option
  selected
  value="RJBS/CPAN-Uploader-0.103018"
>0.103018
  (RJBS on 2023-01-14)</option>
<option
  
  value="RJBS/CPAN-Uploader-0.103017"
>0.103017
  (RJBS on 2023-01-01)</option>
<optgroup label="BackPAN">'
<option
  
  value="RJBS/CPAN-Uploader-0.103016"
>0.103016
  (RJBS on 2021-10-31)</option>
<option
  
  value="RJBS/CPAN-Uploader-0.103015"
>0.103015
  (RJBS on 2020-08-21)</option>
<option
  
  value="RJBS/CPAN-Uploader-0.103014"
>0.103014
  (RJBS on 2020-06-07)</option>
<option
  
  value="RJBS/CPAN-Uploader-0.103013"
>0.103013
  (RJBS on 2016-09-06)</option>
<option
  
  value="RJBS/CPAN-Uploader-0.103012"
>0.103012
  (RJBS on 2016-01-01)</option>
<option
  
  value="RJBS/CPAN-Uploader-0.103011"
>0.103011
  (RJBS on 2015-10-06)</option>
<option
  
  value="RJBS/CPAN-Uploader-0.103010"
>0.103010
  (RJBS on 2015-08-11)</option>
<option
  
  value="RJBS/CPAN-Uploader-0.103009"
>0.103009
  (RJBS on 2015-05-27)</option>
<option
  
  value="RJBS/CPAN-Uploader-0.103008"
>0.103008
  (RJBS on 2015-02-09)</option>
<option
  
  value="RJBS/CPAN-Uploader-0.103007"
>0.103007
  (RJBS on 2014-04-05)</option>
<option
  
  value="RJBS/CPAN-Uploader-0.103006"
>0.103006
  (RJBS on 2013-12-13)</option>
<option
  
  value="RJBS/CPAN-Uploader-0.103005-TRIAL"
>0.103005-TRIAL DEV
  (RJBS on 2013-07-01)</option>
<option
  
  value="RJBS/CPAN-Uploader-0.103004"
>0.103004
  (RJBS on 2013-03-12)</option>
<option
  
  value="RJBS/CPAN-Uploader-0.103003-TRIAL"
>0.103003-TRIAL DEV
  (RJBS on 2013-01-31)</option>
<option
  
  value="RJBS/CPAN-Uploader-0.103002"
>0.103002
  (RJBS on 2012-12-25)</option>
<option
  
  value="RJBS/CPAN-Uploader-0.103001"
>0.103001
  (RJBS on 2012-03-26)</option>
<option
  
  value="RJBS/CPAN-Uploader-0.103000"
>0.103000
  (RJBS on 2011-04-08)</option>
<option
  
  value="RJBS/CPAN-Uploader-0.102150"
>0.102150
  (RJBS on 2010-08-03)</option>
<option
  
  value="RJBS/CPAN-Uploader-0.101670"
>0.101670
  (RJBS on 2010-06-16)</option>
<option
  
  value="RJBS/CPAN-Uploader-0.101550"
>0.101550
  (RJBS on 2010-06-04)</option>
<option
  
  value="RJBS/CPAN-Uploader-0.101260"
>0.101260
  (RJBS on 2010-05-07)</option>
<option
  
  value="RJBS/CPAN-Uploader-0.100760"
>0.100760
  (RJBS on 2010-03-17)</option>
<option
  
  value="RJBS/CPAN-Uploader-0.100750"
>0.100750
  (RJBS on 2010-03-16)</option>
<option
  
  value="RJBS/CPAN-Uploader-0.100660"
>0.100660
  (RJBS on 2010-03-07)</option>
<option
  
  value="RJBS/CPAN-Uploader-0.093390"
>0.093390
  (RJBS on 2009-12-06)</option>
<option
  
  value="RJBS/CPAN-Uploader-0.093330"
>0.093330
  (RJBS on 2009-11-29)</option>
<option
  
  value="RJBS/CPAN-Uploader-0.092340"
>0.092340
  (RJBS on 2009-08-22)</option>
<option
  
  value="RJBS/CPAN-Uploader-0.091270"
>0.091270
  (RJBS on 2009-05-07)</option>
<option
  
  value="RJBS/CPAN-Uploader-0.006"
>0.006
  (RJBS on 2009-02-09)</option>
<option
  
  value="RJBS/CPAN-Uploader-0.005"
>0.005
  (RJBS on 2008-11-09)</option>
<option
  
  value="RJBS/CPAN-Uploader-0.004"
>0.004
  (RJBS on 2008-10-23)</option>
<option
  
  value="RJBS/CPAN-Uploader-0.003"
>0.003
  (RJBS on 2008-06-09)</option>
<option
  
  value="RJBS/CPAN-Uploader-0.002"
>0.002
  (RJBS on 2008-06-06)</option>
<option
  
  value="RJBS/CPAN-Uploader-0.001"
>0.001
  (RJBS on 2008-06-06)</option>
</optgroup>
</select>
    <a data-keyboard-shortcut="g d" class="release-name" href="https://metacpan.org/dist/CPAN-Uploader">CPAN-Uploader-0.103018</a>
  </div>
<span class="river-gauge-gauge">
  <svg width="24px"
       height="15px"
       version="1.1"
       xmlns="http://www.w3.org/2000/svg"
       xmlns:xlink="http://www.w3.org/1999/xlink">

    <g>
      <title>        River stage three &#10;
          • 32 direct dependents &#10;          • 735 total dependents
      </title>

      <rect x="0"  y="0" width="4" height="15" fill="#7ea3f2" />
      <rect x="5"  y="0" width="4" height="15" fill="#7ea3f2" />
      <rect x="10"  y="0" width="4" height="15" fill="#7ea3f2" />
      <rect x="15"  y="0" width="4" height="15" fill="#e4e2e2" />
      <rect x="20"  y="0" width="4" height="15" fill="#e4e2e2" />
    </g>
  </svg>

</span>
<div id="CPAN-Uploader-fav" class="logged_in">
<form action="https://metacpan.org/account/favorite/add" style="display: inline" onsubmit="return favDistribution(this)">
    <input type="hidden" name="remove" value="0">
    <input type="hidden" name="release" value="CPAN-Uploader-0.103018">
    <input type="hidden" name="author" value="RJBS">
    <input type="hidden" name="distribution" value="CPAN-Uploader">
    <button type="submit" class="favorite highlight"><span>24</span> ++</button>
</form>
</div>
<div class="logged_out">
<a href="./CPAN::Uploader.html" onclick="alert('Please sign in to add favorites'); return false" class="favorite highlight">
<span>24</span> ++</a>
</div>
   / <span>CPAN::Uploader</span>
</div>
          </div>
          <main class="content">


<nav class="toc">
  <div class="toc-header"><strong>Contents</strong></div>
<ul>
  <li><a href="./CPAN::Uploader.html#NAME">NAME</a></li>
  <li><a href="./CPAN::Uploader.html#VERSION">VERSION</a></li>
  <li><a href="./CPAN::Uploader.html#PERL-VERSION">PERL VERSION</a></li>
  <li><a href="./CPAN::Uploader.html#METHODS">METHODS</a>
    <ul>
      <li><a href="./CPAN::Uploader.html#upload_file">upload_file</a></li>
      <li><a href="./CPAN::Uploader.html#new">new</a></li>
      <li><a href="./CPAN::Uploader.html#read_config_file">read_config_file</a></li>
      <li><a href="./CPAN::Uploader.html#log">log</a></li>
      <li><a href="./CPAN::Uploader.html#log_debug">log_debug</a></li>
    </ul>
  </li>
  <li><a href="./CPAN::Uploader.html#ORIGIN">ORIGIN</a></li>
  <li><a href="./CPAN::Uploader.html#AUTHOR">AUTHOR</a></li>
  <li><a href="./CPAN::Uploader.html#CONTRIBUTORS">CONTRIBUTORS</a></li>
  <li><a href="./CPAN::Uploader.html#COPYRIGHT-AND-LICENSE">COPYRIGHT AND LICENSE</a></li>
</ul></nav>
<div class="pod anchors">
<h1 id="NAME">NAME</h1>

<p>CPAN::Uploader - upload things to the CPAN</p>

<h1 id="VERSION">VERSION</h1>

<p>version 0.103018</p>

<h1 id="PERL-VERSION"><a id="PERL"></a>PERL VERSION</h1>

<p>This library should run on perls released even a long time ago. It should work on any version of perl released in the last five years.</p>

<p>Although it may work on older versions of perl, no guarantee is made that the minimum required version will not be increased. The version may be increased for any reason, and there is no promise that patches will be accepted to lower the minimum required perl.</p>

<h1 id="METHODS">METHODS</h1>

<h2 id="upload_file">upload_file</h2>

<pre><code>  CPAN::Uploader-&gt;upload_file($file, \%arg);

  $uploader-&gt;upload_file($file);</code></pre>

<p>Valid arguments are:</p>

<pre><code>  user        - (required) your CPAN / PAUSE id
  password    - (required) your CPAN / PAUSE password
  subdir      - the directory (under your home directory) to upload to
  http_proxy  - uri of the http proxy to use
  upload_uri  - uri of the upload handler; usually the default (PAUSE) is right
  debug       - if set to true, spew lots more debugging output
  retries     - number of retries to perform on upload failure (5xx response)
  retry_delay - number of seconds to wait between retries</code></pre>

<p>This method attempts to actually upload the named file to the CPAN. It will raise an exception on error. c&lt;upload_uri&gt; can also be set through the ENV variable c&lt;CPAN_UPLOADER_UPLOAD_URI&gt;.</p>

<h2 id="new">new</h2>

<pre><code>  my $uploader = CPAN::Uploader-&gt;new(\%arg);</code></pre>

<p>This method returns a new uploader. You probably don&#39;t need to worry about this method.</p>

<p>Valid arguments are the same as those to <code>upload_file</code>.</p>

<h2 id="read_config_file">read_config_file</h2>

<pre><code>  my $config = CPAN::Uploader-&gt;read_config_file( $filename );</code></pre>

<p>This reads the config file and returns a hashref of its contents that can be used as configuration for CPAN::Uploader.</p>

<p>If no filename is given, it looks for <i>.pause</i> in the user&#39;s home directory (from the env var <code>HOME</code>, or the current directory if <code>HOME</code> isn&#39;t set).</p>

<p>See <a href="https://metacpan.org/pod/distribution/CPAN-Uploader/bin/cpan-upload#CONFIGURATION">&quot;CONFIGURATION&quot; in cpan-upload</a> for the config format.</p>

<h2 id="log">log</h2>

<pre><code>  $uploader-&gt;log($message);</code></pre>

<p>This method logs the given string. The default behavior is to print it to the screen. The message should not end in a newline, as one will be added as needed.</p>

<h2 id="log_debug">log_debug</h2>

<p>This method behaves like <code><a href="./CPAN::Uploader.html#log">&quot;log&quot;</a></code>, but only logs the message if the CPAN::Uploader is in debug mode.</p>

<h1 id="ORIGIN">ORIGIN</h1>

<p>This code is mostly derived from <code>cpan-upload-http</code> by Brad Fitzpatrick, which in turn was based on <code>cpan-upload</code> by Neil Bowers. I (<i>rjbs</i>) didn&#39;t want to have to use a <code>system</code> call to run either of those, so I refactored the code into this module.</p>

<h1 id="AUTHOR">AUTHOR</h1>

<p>Ricardo SIGNES &lt;cpan@semiotic.systems&gt;</p>

<h1 id="CONTRIBUTORS">CONTRIBUTORS</h1>

<ul>

<li><p>Barbie &lt;barbie@missbarbell.co.uk&gt;</p>

</li>
<li><p>Christian Walde &lt;walde.christian@googlemail.com&gt;</p>

</li>
<li><p>David Caldwell &lt;david@porkrind.org&gt;</p>

</li>
<li><p>David Golden &lt;dagolden@cpan.org&gt;</p>

</li>
<li><p>fREW Schmidt &lt;frioux@gmail.com&gt;</p>

</li>
<li><p>Gabor Szabo &lt;szabgab@gmail.com&gt;</p>

</li>
<li><p>Graham Knop &lt;haarg@haarg.org&gt;</p>

</li>
<li><p>Karen Etheridge &lt;ether@cpan.org&gt;</p>

</li>
<li><p>Kent Fredric &lt;kentfredric@gmail.com&gt;</p>

</li>
<li><p>Marcus Ramberg &lt;marcus.ramberg@gmail.com&gt;</p>

</li>
<li><p>Mark Fowler &lt;mark@twoshortplanks.com&gt;</p>

</li>
<li><p>Mike Doherty &lt;doherty@cs.dal.ca&gt;</p>

</li>
<li><p>perlancar &lt;perlancar@gmail.com&gt;</p>

</li>
<li><p>Ricardo Signes &lt;rjbs@semiotic.systems&gt;</p>

</li>
<li><p>Shlomi Fish &lt;shlomif@shlomifish.org&gt;</p>

</li>
<li><p>Steven Haryanto (on Asus Zenbook) &lt;stevenharyanto@gmail.com&gt;</p>

</li>
<li><p>sungo &lt;sungo@sungo.us&gt;</p>

</li>
<li><p>Thibault DUPONCHELLE &lt;thibault.duponchelle@amadeus.com&gt;</p>

</li>
<li><p>Torsten Raudssus &lt;github@raudssus.de&gt;</p>

</li>
<li><p>Vincent Pit &lt;perl@profvince.com&gt;</p>

</li>
</ul>

<h1 id="COPYRIGHT-AND-LICENSE"><a id="COPYRIGHT"></a>COPYRIGHT AND LICENSE</h1>

<p>This software is copyright (c) 2023 by Ricardo SIGNES.</p>

<p>This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.</p></div>

<div id="metacpan_install-instructions-dialog" class="modal fade">
  <div class="modal-dialog">
    <div class="modal-content">
      <div class="modal-header">
        <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
        <h4 class="modal-title">Module Install Instructions</h4>
      </div>
      <div class="modal-body">
        <p>To install CPAN::Uploader, copy and paste the appropriate command in to your terminal.</p>
        <p><a href="https://metacpan.org/dist/App-cpanminus/view/bin/cpanm">cpanm</a></p>
        <pre><code>cpanm CPAN::Uploader</code></pre>
        <p><a href="https://metacpan.org/pod/CPAN">CPAN shell</a></p>
        <pre><code>perl -MCPAN -e shell
install CPAN::Uploader</code></pre>
        <p>For more information on module installation, please visit <a href="https://www.cpan.org/modules/INSTALL.html">the detailed CPAN module installation guide</a>.</p>
      </div>
      <div class="modal-footer">
        <a href="./CPAN::Uploader.html#" data-dismiss="modal" class="btn">Close</a>
      </div>
    </div>
  </div>
</div>
          </main>
          <div class="content-pagination">
          </div>
        </div>
        <footer class="footer">
          <div class="footer-container">
            <div class="footer-social">
              <div class="footer-link footer-logo">
                <a href="https://metacpan.org/">
                  <img src="https://metacpan.org/static/images/metacpan-logo.svg" alt="MetaCPAN" />
                </a>
              </div>
              <a class="footer-social-link" href="https://github.com/metacpan">
                <i class="fab fa-github-square"></i>
              </a>
              <a class="footer-social-link" href="https://fosstodon.org/@metacpan">
                <i class="fab fa-mastodon"></i>
              </a>
            </div>
            <div class="footer-links">
              <div class="footer-link">
                  <a href="https://metacpan.org/about">About</a>
              </div>
              <div class="footer-link">
                  <a href="https://metacpan.org/about/sponsors">Sponsor</a>
              </div>
              <div class="footer-link">
                  <a href="https://grep.metacpan.org">grep::cpan</a>
              </div>
              <div class="footer-link">
                  <a href="https://metacpan.org/recent">Recent</a>
              </div>
              <div class="footer-link">
                  <a href="https://metacpan.org/about/faq">FAQ</a>
              </div>
              <div class="footer-link">
                  <a href="https://metacpan.org/tools">Tools</a>
              </div>
              <div class="footer-link">
                  <a href="https://fastapi.metacpan.org/">API</a>
              </div>
              <div class="footer-link">
                  <a href="https://www.perl.org/">Perl.org</a>
              </div>
            </div>
            <div class="footer-sponsors">
              <a class="footer-sponsor-link" target="_blank" href="https://www.bytemark.co.uk/" rel="noopener">
                <img class="footer-sponsor-bytemark" src="https://metacpan.org/static/images/sponsors/bytemark_logo.svg" alt="Bytemark logo">
              </a>
              <a class="footer-sponsor-link" target="_blank" href="https://www.liquidweb.com/" rel="noopener">
                <img class="footer-sponsor-liquidweb" src="https://metacpan.org/static/images/sponsors/liquidweb_logo.png" alt="liquidweb logo">
              </a>
              <a class="footer-sponsor-link" target="_blank" href="https://deriv.com/careers/" rel="noopener">
                <img class="footer-sponsor-deriv" src="https://metacpan.org/static/images/sponsors/deriv.svg" alt="Deriv logo">
              </a>
              <a class="footer-sponsor-link" target="_blank" href="https://geocode.xyz" rel="noopener">
                <img class="footer-sponsor-geocode" src="https://metacpan.org/static/images/sponsors/geocodelogo.svg" alt="Geocode logo">
              </a>
              <a class="footer-sponsor-link" target="_blank" href="https://www.fastly.com/" rel="noopener">
                <img class="footer-sponsor-fastly" src="https://metacpan.org/static/images/sponsors/fastly_logo.svg" alt="Fastly logo">
              </a>
              <a class="footer-sponsor-link" target="_blank" href="https://opencagedata.com" rel="noopener">
                <img class="footer-sponsor-opencage" src="https://metacpan.org/static/images/sponsors/open-cage.svg" alt="OpenCage logo">
              </a>
            </div>
          </div>
        </footer>
        <div class="modal fade" tabindex="-1" role="dialog" id="metacpan_keyboard-shortcuts">
          <div class="modal-dialog">
            <div class="modal-content">
              <div class="modal-header">
                <button type="button" class="close" data-dismiss="modal">&times;</button>
                <h4 class="modal-title">Keyboard Shortcuts</h4>
              </div>
              <div class="modal-body row">
<div class="col-md-6">
  <table class="table keyboard-shortcuts">
    <thead>
      <tr>
        <th></th>
        <th>Global</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td class="keys">
          <kbd>s</kbd>
        </td>
        <td>Focus search bar</td>
      </tr>
      <tr>
        <td class="keys">
          <kbd>?</kbd>
        </td>
        <td>Bring up this help dialog</td>
      </tr>
    </tbody>
  </table>

  <table class="table keyboard-shortcuts">
    <thead>
      <tr>
        <th></th>
        <th>GitHub</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td class="keys">
          <kbd>g</kbd> <kbd>p</kbd>
        </td>
        <td>Go to pull requests</td>
      </tr>
      <tr>
        <td class="keys">
          <kbd>g</kbd> <kbd>i</kbd>
        </td>
        <td>go to github issues (only if github is preferred repository)</td>
      </tr>
    </tbody>
  </table>
</div>

<div class="col-md-6">
  <table class="table keyboard-shortcuts">
    <thead>
      <tr>
        <th></th>
        <th>POD</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td class="keys">
          <kbd>g</kbd> <kbd>a</kbd>
        </td>
        <td>Go to author</td>
      </tr>
      <tr>
        <td class="keys">
          <kbd>g</kbd> <kbd>c</kbd>
        </td>
        <td>Go to changes</td>
      </tr>
      <tr>
        <td class="keys">
          <kbd>g</kbd> <kbd>i</kbd>
        </td>
        <td>Go to issues</td>
      </tr>
      <tr>
        <td class="keys">
          <kbd>g</kbd> <kbd>d</kbd>
        </td>
        <td>Go to dist</td>
      </tr>
      <tr>
        <td class="keys">
          <kbd>g</kbd> <kbd>r</kbd>
        </td>
        <td>Go to repository/SCM</td>
      </tr>
      <tr>
        <td class="keys">
          <kbd>g</kbd> <kbd>s</kbd>
        </td>
        <td>Go to source</td>
      </tr>
      <tr>
        <td class="keys">
          <kbd>g</kbd> <kbd>b</kbd>
        </td>
        <td>Go to file browse</td>
      </tr>

    </tbody>
  </table>
</div>

<div class="col-md-12">
  <table class="table keyboard-shortcuts">
    <thead>
      <tr>
        <th></th>
        <th>Search terms</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><em>module:</em> (e.g. <a href="https://metacpan.org/search?q=module%3APlugin">module:Plugin</a>)</td>
      </tr>
      <tr>
        <td><em>distribution:</em> (e.g. <a href="https://metacpan.org/search?q=distribution%3ADancer+auth">distribution:Dancer auth</a>)</td>
      </tr>
      <tr>
        <td><em>author:</em> (e.g. <a href="https://metacpan.org/search?q=author%3ASONGMU+Redis">author:SONGMU Redis</a>)</td>
      </tr>
      <tr>
        <td><em>version:</em> (e.g. <a href="https://metacpan.org/search?q=version%3A1.00">version:1.00</a>)</td>
      </tr>
    </tbody>
  </table>
</div>
              </div>
              <div class="modal-footer"></div>
            </div>
          </div>
        </div>
    </body>
</html>
